package httpconf

import (
	"log"
	"src/routers"
	"src/utils"
	"time"

	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
)

func InitServer() *gin.Engine {
	g := gin.Default()
	g.Use(cors.Default())
	// 自定义 CORS 配置以允许所有请求来源
	g.Use(cors.New(cors.Config{
		AllowOrigins:     []string{"*"},                                       // 允许所有来源
		AllowMethods:     []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"}, // 允许的请求方法
		AllowHeaders:     []string{"Origin", "Content-Type", "Authorization"}, // 允许的请求头
		ExposeHeaders:    []string{"Content-Length", "Content-Type"},          // 允许客户端读取的响应头
		AllowCredentials: true,                                                // 允许携带凭据（如 Cookies）
		MaxAge:           12 * time.Hour,                                      // 预检请求的缓存时间
	}))
	routers.Routers(g)
	return g
}
func RunServer() {
	conf, err := utils.ReadYamlConfig("conf.yml")
	if err != nil {
		log.Fatal(err)
	} else {
		N := InitServer()
		addr := ":" + conf.Server.Port
		log.Printf("服务器正在运行，监听端口 %s", addr)
		err := N.Run(addr)
		if err != nil {
			return
		}
	}
}
